home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
cli
/
okami15.lzh
/
OKAMI15
/
DOC
/
TRICKS.DOC
< prev
Wrap
Text File
|
1992-09-20
|
15KB
|
430 lines
===============================================
@(#) OKAMI SHELL VERSION 1.5 - TIPS UND TRICKS
===============================================
Stand: 19.9.1992
BITTE ERST DIE DATEIEN README UND OKAMI.DOC LESEN!
----------------------------------------------------------------------------
INHALT
Profile
Aufruf von Programmen
Benutzung der Shell von Diskette aus
Beispiel-Shellscripts
okback.sh
e.sh
showpic.sh
startprg.sh
Shell-Funktionen
Die gemexec-Funktion
Die screensave-Funktion
Speichern und Restaurieren der Shell-Einstellungen
MS-DOS-Gefühle
C-Shell-Gefühle
Andere Shells: Gulam, Master und bash
Die Versionsnummer der Shell
Diverses
Trikolor-Bildschirm
Aufruf vom Desktop
Uneindeutige Kommandonamen
Compiler-Aufruf
Ändern von Dateinamen-Extendern
Programmierung des UPN-Rechners
----------------------------------------------------------------------------
PROFILE
Ich benutze das folgende Profile zum Konfigurieren der Shell.
# Okami-Shell - System-Profile
# Terminaleinstellung (für Termcap etc.)
TERM=st
# Cursor etwas schneller blinkend
cursor +bv 12
# Aktuelles Directory im Prompt anzeigen
PS1=['$CWD'] ^^^$' '
# Pipes auf die Ramdisk
PIPDIR=M:\
# Nach Ende der Shell CWD sichern...
set +s
# ...und den Cursor abschalten
trap cursor -v
# Directories trennen wie in Unix mit Slash
set +b
# anmelden als Applikation, sollte man immer machen
gon
# Word Wrap On
echo ^033v
# Bidschirm löschen durch viele Leerzeilen
echo "^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n^n"
# Einschaltmeldung
echo
echo Atari Mega-ST 4 ($TERM)
# Versionsnummer der Shell, des TOS und von MiNT
ver -otM
echo
# Ausgabe des Datums des letzten Logins
cat lastlog 2>NULL:
echo
# Ausgabe des freien Speichers
echo Free RAM: `mem` Bytes
echo
# Ausgabe in invertierter Schrift
echo ^033pType help for command survey.^033q
echo
# Datum speichern
echo Last Login: `date` >lastlog
# Letztes CWD zurückholen
cd `cat wdir`
Laufwerk M ist eine Ramdisk, die die Aufgabe hat, die Pipe-Operationen
zu beschleunigen. Dadurch, daß die Pipe auf die Ramdisk gelegt wird
(PIPDIR=M:\), erfolgen alle Pipe-Operationen ohne Plattenzugriff.
Durch die Einstellung "set +s" wird die Shell veranlaßt, vor dem Pro-
grammende das aktuelle Verzeichnis in die Datei $HOME\wdir zu schreiben.
Das Profile benutzt diese Datei, um das aktuelle Verzeichnis wieder auf
den alten Wert einzustellen. So ist man nach dem Start der Shell immer
in dem Verzeichnis, in dem man war, als man die Shell zuletzt verlassen
hatte.
Durch die Einstellung "set +x" werden in einer Eingabe alle Slashes (/)
in Backslashes (\) umgeformt, wodurch man die Möglichkeit hat,
Dateinamen wie in Unix einzugeben, also shell/bin/sh.ttp anstatt
shell\bin\sh.ttp. Natürlich erzeugt dann das Kommando
echo 6/3=2
die Ausgabe
6\3=2
, da alle Slashes umgeformt werden, aber das stört normalerweise nicht.
(den UPN-Rechner stört es übrigens auch nicht, da er den Backslash als-
Divisionszeichen versteht. Aus "upn 6 3 /" wird also "upn 6 3 \".)
Außerdem kann man sich in Notfällen mit einfachen Anführungszeichen
retten,
echo '6/3=2'
ergibt also immer
6/3=2
.
----------------------------------------------------------------------------
AUFRUF VON PROGRAMMEN
(Der folgende Abschnitt ist im wesentlichen für Festplattenbenutzer von
Interesse.)
Viele Programme gehen davon aus, das sich gewisse Dateien wie z.B. RSCs
im aktuellen Verzeichnis befinden. Um ein solches Kommando zu starten,
muß man also mit cd in das jeweilige Verzeichnis wechseln, was unter
Umständen einige Tipparbeit macht, vor allem bei einer Festplatte. Mit
der Okami-Shell ist es möglich, Programme von überall, also von jedem
beliebigen aktuellen Verzeichnis aus zu starten.
Es sei z.B. GEMTEST.PRG ein Programm, das im Verzeichnis
D:\PROG\GEMTEST steht und eine RSC-Datei aus dem aktuellen Verzeichnis
nachladen muß.
Zum Start des Programms müßte man also eingeben
cd d:\prog\gemtest
gemtest
Man kann allerdings auch so vorgehen:
Man erzeugt sich eine Datei namens GEMTEST.SH im Verzeichnis $HOME\bin,
die ungefähr so aussieht:
A=`set -`
set +x
d:\prog\gemtest.prg
set $A
unset A
Zuerst wird die aktuelle Einstellung der Flags in der Shellvariablen A
gespeichert, danach wird das Flag x aktiviert. Wenn dieses Flag
aktiviert ist, führt die Shell vor dem Start eines Binärprogramms ein cd
in das Directory aus, in dem sich das Programm befindet. Nach dem Ende
des Programms wird das ursprüngliche Directory wieder restauriert.
Danach wird das Programm gestartet.
Nach Programmende werden die Shell-Flags werden auf den gespeicherten
Wert zurückgesetzt. Danach wird die lokal verwendete Shellvariable A
freigegeben.
Wenn das Flag -x immer gesetzt ist, kann man denselben Effekt erreichen
durch:
hash gemtest d:/prg/gemtest/gemtest.prg
Normalerweise ist das Flag x immer aktiviert. Programme, die sich in
einem der in der Shellvariablen PATH gespeicherten Directories befinden,
werden also immer korrekt gestartet, indem man nur ihren Namen eingibt.
----------------------------------------------------------------------------
BENUTZUNG DER SHELL VON DISKETTE AUS
Wenn möglich, sollte man die Shell auf einem schnellen Massespeicher
wie Festplatte oder Ramdisk installieren. Wer die Shell hauptsächlich
mit Disketten benutzt, ärgert sich vermutlich darüber, daß es ziemlich
lange dauert, bis ein falsch eingetipptes Kommando als solches erkannt
wird, da die Shell in allen möglichen Ordnern auf der Diskette nach
einer passenden Datei sucht. Mit den folgenden Einstellungen im Profile
kann die An- zahl dieser Suchoperationen minimiert werden:
PATH=.,$HOME\bin
CDPATH=.
Wenn man den Programm-Suchpfad auf das aktuelle Directory abkürzt (mit
der Einstellung "PATH=."), werden noch weniger Suchoperationen
durchgeführt, man kann dann allerdings die mitgelieferten externen Kom-
mandos, die sich in dem Directory $HOME\bin befinden sollten, nicht
mehr von überallher durch den einfachen Kommandonamen aufrufen, sondern
muß den ganzen Pfad angeben (z.B. nicht einfach "format", sondern
"$HOME\bin\format.ttp").
----------------------------------------------------------------------------
BEISPIEL-SHELLSCRIPTS
1) okback.sh
Ich benutze das folgende Shellscript zum Sichern der Quelldateien der
Shell auf Diskette. Es wird ein lzh-Archiv auf der Diskette angelegt, in
das die seit dem letzten Backup geänderten Dateien hineingeschrieben
werden.
# Temporär-Directory
DIR=M:/tmp/okbak
# Liste der zu sichernden Dateien
FILES=*.c *.h sh.prj doc/*.nr
alert stop 1 "Bitte die Okami-Backup-^|Diskette einlegen." ^
"Ok^|Abbruch" ERG
if [ $ERG = 2 ]
then
exit
fi
# Temp-Dir anlegen und Archiv von der Diskette hineinkopieren
mkdir -r $DIR/
cp -v a:/okbak.lzh $DIR
# geänderte Dateien ins Archiv einfügen.
# lharc ist ein externes